package com.li.onjava8.concurrent.under.atomic;

import com.li.onjava8.concurrent.under.share.EvenChecker;
import com.li.onjava8.concurrent.under.share.IntGenerator;

import java.util.concurrent.atomic.AtomicInteger;

/**
 * 现在，我们通过使用 AtomicInteger 来消除了 synchronized 关键字。
 * 下面使用 AtomicInteger 来重写 SynchronizedEvenProducer.java 示例：
 * 再次，使用 AtomicInteger 消除了对所有其他同步方式的需要。
 */
public class AtomicEvenProducer extends IntGenerator {

    private AtomicInteger currentEventValue = new AtomicInteger(0);

    @Override
    public int next() {
        return currentEventValue.addAndGet(2);
    }

    public static void main(String[] args) {
        EvenChecker.test(new AtomicEvenProducer());
    }
}
